package me.mingshan.leetcode;

/**
 * https://leetcode.cn/problems/rectangle-overlap/
 *
 * 矩形以列表 [x1, y1, x2, y2] 的形式表示，其中 (x1, y1) 为左下角的坐标，(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴，左右边平行于 y 轴。
 *
 * 如果相交的面积为 正 ，则称两矩形重叠。需要明确的是，只在角或边接触的两个矩形不构成重叠。
 *
 * 给出两个矩形 rec1 和 rec2 。如果它们重叠，返回 true；否则，返回 false 。
 *
 *
 *
 * 示例 1：
 *
 * 输入：rec1 = [0,0,2,2], rec2 = [1,1,3,3]
 * 输出：true
 * 示例 2：
 *
 * 输入：rec1 = [0,0,1,1], rec2 = [1,0,2,1]
 * 输出：false
 * 示例 3：
 *
 * 输入：rec1 = [0,0,1,1], rec2 = [2,2,3,3]
 * 输出：false
 *
 * @author hanjuntao
 * @date 2025/7/1 0001
 */
public class L_836_rectangle_overlap {

    public static void main(String[] args) {
        int[] rec1 = new int[]{0,0,2,2};
        int[] rec2 = new int[]{1,1,3,3};
        System.out.println(isRectangleOverlap(rec1, rec2));
    }

    public static boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        // 如何计算投影重叠：
        //
        // 前面的x 最小  - 后面的x 最大
        // Math.min(ax2, bx2) - Math.max(ax1, bx1);
        //
        // 前面的y 最小  - 后面的y 最大
        // Math.min(ay2, by2) - Math.max(ay1, by1);

        int width = Math.min(rec1[2], rec2[2]) - Math.max(rec1[0], rec2[0]);
        int height = Math.min(rec1[3], rec2[3]) - Math.max(rec1[1], rec2[1]);

        return width > 0 && height > 0;
    }
}
